sub totient {
    my $i=shift;
    @factors=();
    my $j;
    my $i_backup=$i;
    for ($j=2;$j<=$i;$j++) {
        if ($i%$j==0) {
            push @factors,$j;
            while($i%$j==0) {
                $i/=$j;
            }
        }
    }
    $i=$i_backup;
    foreach $j (@factors) {
        $i*=(1-1/$j);
    }
    return $i;
}

1;
